上一篇是介紹如何將 Rust 後端部署到 DigitalOcean,這篇會介紹如何部署到 AWS EC2,兩種方式給大家參考。
AWS EC2(Amazon Web Services Elastic Compute Cloud)是一個提供可擴展的計算能力的服務。它允許使用者租用虛擬的電腦來運行自己的應用程式。EC2 提供了各種不同大小和性能的虛擬機器,以及許多其他功能,如自動擴展、監控和安全性設置。
登入會員後,選擇「啟動新執行個體」。
輸入名稱,方便之後辨識。
選擇 Amazon Linux 或是 Ubuntu 都可以,這裡選擇 Amazon Linux。架構的話,也是都可以,這裡選擇 x86。以下是這兩者的差異:
特點 | Amazon Linux | Ubuntu |
---|---|---|
設計目的 | 為 AWS 雲環境量身定製,提供高效能、高可靠、和高安全的環境。 | 通用 Linux 發行版,適用於桌面、伺服器和雲環境。 |
兼容性和集成 | 與 AWS 服務和功能有更好的集成。 | 可能需要額外配置或軟體包來與 AWS 服務和功能完全集成。 |
套件管理 | 使用 YUM 作為套件管理系統。 | 使用 APT 作為套件管理系統。 |
社區和支援 | 社區相對較小,但 AWS 提供官方支援和文件。 | 擁有大而活躍的社區,容易找到幫助和資源,以及廣泛的 library 和文件。 |
更新和維護 | 由 AWS 控制更新和維護,可能有更穩定的更新和維護周期。 | 更新可能更頻繁,並且由廣泛的社區支援。 |
版權和許可 | 閉源。 | 開源。 |
效能 | 在 AWS 雲環境中可能提供更好的效能。 | 效能可能依賴於特定的硬體和應用配置。 |
這裡選擇 t2.micro,因為是免費的,所以選擇這個就好。不過,如果對於效能非常在意的話,選這個就不太適合了,可以考慮其他的選項。
這裡選擇「建立新的金鑰對」,然後輸入名稱,然後下載金鑰。
網路設定的部分,選擇自定義,所以點擊編輯按鈕。
重點在於下面的部分,點擊新增安全群組。
連接埠範圍就輸入 8080,自訂來源新增 0.0.0.0/0 和 ::/0。
其他的部分就不用動了,直接點選「啟動執行個體」。
看到下面的畫面,代表已經成功建立了。
接著等待一下,等到執行個體狀態還有檢查狀態都通過,就可以點擊「連線」。
直接點擊「連線至執行個體」。
進入後就會看到以下畫面。
sudo yum update
sudo yum install docker
sudo systemctl start docker
docker --version
加上這個步驟在之後可以不用 sudo
就能執行 docker 指令:
$ sudo usermod -a -G docker ec2-user
$ sudo systemctl start docker
$ sudo systemctl enable docker
然後需要登出並重新登入,以便讓群組變更生效。
這樣就可以不用輸入 sudo
:
$ docker login
$ docker pull username/image-name:tag
$ docker run -p 8080:8080 username/image-name:tag
最後就可以在 Postman 測試一下,例如 IP 是 13.212.137.158
:
跟上一篇一樣,在測試使用地址產生 QR code 時會發現沒辦法正常回應,這是因為我們把 API Key 放在 .env
裡面,所以在呼叫 API 時,沒辦法拿到正確的 API Key。
這篇文章使用了不同的處理方式,使用 Docker Compose 來解決這個問題。
首先建立一個 docker-compose.yml
檔案,內容如下:
version: '3.8'
services:
qrcode-actix:
build: .
image: bucky0112/qrcode-actix:latest
ports:
- '8080:8080'
env_file:
- .env
這個檔案設定了一個服務,名稱是 qrcode-actix,然後指定了 Dockerfile 的位置,以及 Image 的名稱,還有對應的 port,最後是指定 .env
檔案的位置。
接下來可以測試一下:
$ docker-compose up --build
沒問題的話,就可以上傳到 AMI(Amazon Machine Image) 了。
上傳的方式有很多種,這裡示範一下用 Git 來上傳。
因為 AMI 預設沒有安裝 Git,所以要先安裝一下:
$ sudo yum install git -y
確保專案已經上傳到 GitHub,然後在 AMI 上執行以下指令:
$ git clone <repository-url>
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
最後記得要新增一個 .env
,可以用 vim 來新增。
接下來就可以執行 docker-compose 了:
$ docker-compose up --build
最後在 Postman 測試也沒問題:
不過這樣的方式有點麻煩,所以之後可以考慮使用 CI/CD 來自動化這個流程。